
const app = require('express')();

const http = require('http').Server(app);

const io = require('socket.io')(http);

const fs = require('fs');

app.get('/',function (req,res) {
    //将读取到的文件发送到浏览器
    function callback(data) {
        res.send(data.toString());
    }
    //这里express仅仅读取的是一个socketIoClinet.html文件，整个项目中还有其他文件要读取，例如html、js、css、img
    fs.readFile('./socketIoClinet.html',function (error,data) {
        if(error){
            console.log(error);
            callback('文件不存在');
        }else {
            callback(data);
        }
    })
})

//html页面中引入了socket.io.js
//以后看下路由是什么，再去做，
// app.get('/socket.io.js')
//页面已经能够加载，不要再做了

//socket.io设置
//在线用户
var onlineUsers = new Object();

//当前的在线人数
var onlineCount = 0;

var i =0;

io.on('connection',function (socket) {
    console.log('有人连上来了~');
//    监听新用户的加入
    socket.name = ++i;
    onlineUsers[socket.name] = socket;

//    监听用户退出
    socket.on('disconnect',function () {
        console.log('有人退出');
        delete onlineUsers[socket.name];
    })

//    监听用户发布聊天内容
    socket.on('message',function(msg){
        console.log(socket.name +'说：'+msg);
        broadcast(msg,socket);
    })
})

var broadcast = function (msg,socket) {
    for(var key in onlineUsers){
        onlineUsers[key].send(socket.name +'说：'+msg);
    }
}

http.listen(9000,function () {
    console.log('listening on *:9000');
})